package com.juma.cartridge.retryque.aop;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Retry {

	/**
	 * 业务识别码
	 * @return
	 */
	String bizCode();
	
	/**
	 * 最大重试次数
	 * @return
	 */
	int max() default 10;
	
	/**
	 * 重试间隔秒数
	 * @return
	 */
	int interval() default 1;
	
	/**
	 * 当抛出此属性指定的异常时,需要进行重试
	 * @return
	 */
	Class<? extends Throwable>[] when() default {};
	
	/**
	 * 当抛出此属性指定的异常时,忽略重试
	 * @return
	 */
	Class<? extends Throwable>[] ignores() default {};
	
}
